﻿--============================================================
-- Ghi chú khi đi đồng bộ CSDL
/* Do phân lại giá trị các bộ phận khi xác nhận phiếu
-- BCTH = 0 (KH chưa xác nhận) 
-- BCTH = 1 (KH xác nhận)
-- BCTH = 2 (Kho xác nhận)
-- BCTH = 3 (TCSL xác nhận)
-- BCTH = 4 (TCT xác nhận)*/

/*
  Ở dữ liệu cũ, nếu TCSL cập nhật (TCSL = 1) mà TCT chưa xác nhận (BCTH = 1) 
  thì ở dữ liệu mới set BCTH = 3 (TCSL xác nhận)
*/
	update tblDPNX
	set BCTH = 3
	where TCSL = 1 && BCTH = 1

/* Ở dữ liệu cũ, nếu TCT đã xác nhận (BCTH=2) 
   thì ở dữ liệu mới set BCTH = 4 (Mặc định coi như TCSL đã xác nhận trước đó rồi)
   */
   update tblDPNX
   set BCTH = 4
   where BCTH  =2
   
--============================================================
--Ngày 2014-03-18:

--============================================================
--Cập nhật ghi chú column BCTH
BEGIN TRANSACTION
GO
DECLARE @v sql_variant 
SET @v = N'Báo cáo thực hiện: Cho biết phiếu xác nhận ở KH(1), TCT(2), TCSL(3), Kho(4)'
EXECUTE sp_updateextendedproperty N'MS_Description', @v, N'SCHEMA', N'dbo', N'TABLE', N'tblDPNX', N'COLUMN', N'BCTH'
GO
COMMIT

--============================================================
-- =============================================
-- Author:		HT
-- Update date: 2014-03-18
-- Description:	Tài chính tiền xác nhận
-- Tài chính tiền sẽ không còn cập nhật slth và slss vì:
-- + slth do Kho thực hiện
-- + slss do TCSL thực hiện
-- =============================================
ALTER      procedure [dbo].[sp_TaiChinhXacNhan]
@DPNX_ID as numeric, @kyqt as tinyint
as
begin
	--Khi tai chinh xac nhan thi thuc hien chuyen theo cac buoc sau:
	--B1: Update tblDPNX: set bcth = 2, kyqt = @kyqt
	--B2: Update tblSLNX: set slth = slkh
	--B3: Update cac mat hang cua phieu NX trong tblTON:

	declare @nx as varchar(1), @tcnx_id as varchar(6), @slnx_id as numeric, @mathang_id as numeric, @slkh as numeric(13,2), @slth as numeric(13,2)
	select @NX = NX, @tcnx_id = tcnx from tblDPNX where DPNX_ID = @DPNX_ID
	--B1: Update tblDPNX
	update tblDPNX
	set bcth = 2, kyqt = @kyqt
	where dpnx_id = @dpnx_id
	
	-- 2014-03-18: Bỏ cập nhật các slkh, slth, slss
	-----Neu phieu nx khong phai la dieu chinh so luong so sach
	--if not exists(select * from tblTCNX where kh = @tcnx_id and ten = N'DCSS')
	--begin
	--	--B2: Update tblSLNX
	--	update tblSLNX
	--	set slth = slkh
	--	where dpnx_id = @dpnx_id
	
	--	--B3: Update cac mat hang cua phieu NX trong tblTON:
	--	declare cur cursor for
	--	select SLNX_ID, MATHANG_ID, SLKH, SLTH 
	--	from tblSLNX 
	--	where DPNX_ID = @DPNX_ID
	--	open cur
	--	fetch next from cur
	--	into @slnx_id, @mathang_id, @slkh, @slth
	--	if @NX = 'N' --Neu la phieu nhap
	--		while @@fetch_status = 0
	--		begin
	--			update tblTON
	--			set slndkth = slndkth + @slth,
	--			sltonth = sltonth + @slth,
	--			sltonss = sltonss + @slth
	--			where mathang_id = @mathang_id
	--			fetch next from cur
	--			into @SLNX_ID, @MATHANG_ID, @SLKH, @SLTH
	--		end
	--	else --Neu la phieu xuat
	--		while @@fetch_status = 0
	--		begin
	--			update tblTON
	--			set slxdkth = slxdkth + @slth,
	--			sltonth = sltonth - @slth, 
	--			sltonss = sltonss - @slth
	--			where mathang_id = @mathang_id
	--			fetch next from cur
	--			into @SLNX_ID, @MATHANG_ID, @SLKH, @SLTH
	--		end
	--	close cur
	--	deallocate cur
	--end

end

-- ============================================================
-- =============================================
-- Author:		HT
-- Create date: 2014-03-18
-- Description:	Kế hoạch xác nhận
-- Sau khi KH nhập thông tin phiếu xong thì sẽ xác nhận là phiếu đã được KH xác nhận
-- Khi đó, Kho mới có quyền xác nhận slth
-- =============================================
alter      procedure [dbo].[sp_KeHoachXacNhan]
@DPNX_ID as numeric
as
begin
	--Khi kế hoạch xác nhận thì:
	--B1: Update tblDPNX: set bcth = 1
	--B3: Update slkh của các mặt hàng của phiếu NX trong tblTON:
	declare @nx as varchar(1), @tcnx_id as varchar(6), @slnx_id as numeric, @mathang_id as numeric, @slkh as numeric(13,2)
	select @NX = NX, @tcnx_id = tcnx from tblDPNX where DPNX_ID = @DPNX_ID
	--B1: Update tblDPNX
	update tblDPNX
	set bcth = 1
	where dpnx_id = @dpnx_id
	
	--B3: Update cac mat hang cua phieu NX trong tblTON
	declare cur cursor for
	select SLNX_ID, MATHANG_ID, SLKH
	from tblSLNX 
	where DPNX_ID = @DPNX_ID
	open cur
	fetch next from cur
	into @slnx_id, @mathang_id, @slkh
	if @NX = 'N' --Neu la phieu nhap
		while @@fetch_status = 0
		begin
			update tblTON
			set slndkkh = slndkkh + @slkh
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH
		end
	else --Neu la phieu xuat
		while @@fetch_status = 0
		begin
			update tblTON
			set slxdkkh = slxdkkh + @slkh
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH
		end
	close cur
	deallocate cur
end


-- =============================================
-- Author:		HT
-- Create date: 2014-03-18
-- Description:	Kế hoạch hủy xác nhận
-- Kế hoạch hủy xác nhận phiếu sẽ quay về trạng thái chưa có xác nhận
-- Các số lượng KH trong bảng tblTON sẽ reset lại
-- =============================================
alter      procedure [dbo].[sp_KeHoachHuyXacNhan]
@DPNX_ID as numeric
as
begin
	--Khi kế hoạch xác nhận thì:
	--B1: Update tblDPNX: set bcth = 0
	--B3: Update slkh của các mặt hàng của phiếu NX trong tblTON:
	declare @nx as varchar(1), @tcnx_id as varchar(6), @slnx_id as numeric, @mathang_id as numeric, @slkh as numeric(13,2)
	select @NX = NX, @tcnx_id = tcnx from tblDPNX where DPNX_ID = @DPNX_ID
	
	--B1: Update tblDPNX
	update tblDPNX
	set bcth = 0
	where dpnx_id = @dpnx_id
	
	--B3: Update cac mat hang cua phieu NX trong tblTON
	declare cur cursor for
	select SLNX_ID, MATHANG_ID, SLKH
	from tblSLNX 
	where DPNX_ID = @DPNX_ID
	open cur
	fetch next from cur
	into @slnx_id, @mathang_id, @slkh
	if @NX = 'N' --Neu la phieu nhap
		while @@fetch_status = 0
		begin
			update tblTON
			set slndkkh = slndkkh - @slkh
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH
		end
	else --Neu la phieu xuat
		while @@fetch_status = 0
		begin
			update tblTON
			set slxdkkh = slxdkkh - @slkh
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH
		end
	close cur
	deallocate cur
end


-- =============================================
-- Author:		HT
-- Create date: 2014-03-18
-- Description:	Kho xác nhận
-- =============================================
create      procedure [dbo].[sp_KhoXacNhan]
@DPNX_ID as numeric
as
begin
	--Khi kế hoạch xác nhận thì:
	--B1: Update tblDPNX: set bcth = 3
	--B3: Update slkh của các mặt hàng của phiếu NX trong tblTON:

	declare @nx as varchar(1), @tcnx_id as varchar(6), @slnx_id as numeric, @mathang_id as numeric, @slkh as numeric(13,2), @slth as numeric(13,2)
	select @NX = NX, @tcnx_id = tcnx from tblDPNX where DPNX_ID = @DPNX_ID
	
	--B1: Update tblDPNX
	update tblDPNX
	set bcth = 3
	where dpnx_id = @dpnx_id
	
	--B3: Update cac mat hang cua phieu NX trong tblTON
	declare cur cursor for
	select SLNX_ID, MATHANG_ID, SLKH, SLTH 
	from tblSLNX 
	where DPNX_ID = @DPNX_ID
	open cur
	fetch next from cur
	into @slnx_id, @mathang_id, @slkh, @slth
	if @NX = 'N' --Neu la phieu nhap
		while @@fetch_status = 0
		begin
			update tblTON
			set slndkth = slndkth + @slth
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH, @SLTH
		end
	else --Neu la phieu xuat
		while @@fetch_status = 0
		begin
			update tblTON
			set slxdkth = slxdkth + @slth
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH, @SLTH
		end
	close cur
	deallocate cur
end
	
	
-- =============================================
-- Author:		HT
-- Create date: 2014-03-18
-- Description:	Kho hủy xác nhận
-- Kho hủy xác nhận thì phiếu sẽ về lại trạng thái KH xác nhận
-- =============================================
alter      procedure [dbo].[sp_KhoHuyXacNhan]
@DPNX_ID as numeric
as
begin
	--Khi kế hoạch xác nhận thì:
	--B1: Update tblDPNX: set bcth = 1
	--B3: Update slkh của các mặt hàng của phiếu NX trong tblTON:

	declare @nx as varchar(1), @tcnx_id as varchar(6), @slnx_id as numeric, @mathang_id as numeric, @slkh as numeric(13,2), @slth as numeric(13,2)
	select @NX = NX, @tcnx_id = tcnx from tblDPNX where DPNX_ID = @DPNX_ID
	
	--B1: Update tblDPNX
	update tblDPNX
	set bcth = 1 --bcth=1 về trạng thái KH xác nhận
	where dpnx_id = @dpnx_id
	
	--B3: Update cac mat hang cua phieu NX trong tblTON
	declare cur cursor for
	select SLNX_ID, MATHANG_ID, SLKH, SLTH 
	from tblSLNX 
	where DPNX_ID = @DPNX_ID
	open cur
	fetch next from cur
	into @slnx_id, @mathang_id, @slkh, @slth
	if @NX = 'N' --Neu la phieu nhap
		while @@fetch_status = 0
		begin
			update tblTON
			set slndkth = slndkth - @slth
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH, @SLTH
		end
	else --Neu la phieu xuat
		while @@fetch_status = 0
		begin
			update tblTON
			set slxdkth = slxdkth - @slth
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH, @SLTH
		end
	close cur
	deallocate cur
end

-- =============================================
-- Author:		HT
-- Create date: 2014-03-18
-- Description:	Kho xác nhận
-- =============================================
create      procedure [dbo].[sp_TCSLXacNhan]
@DPNX_ID as numeric
as
begin
	--Khi kế hoạch xác nhận thì:
	--B1: Update tblDPNX: set bcth = 3
	--B3: Update slkh của các mặt hàng của phiếu NX trong tblTON:

	declare @nx as varchar(1), @tcnx_id as varchar(6), @slnx_id as numeric, @mathang_id as numeric, @slkh as numeric(13,2), @slth as numeric(13,2)
	select @NX = NX, @tcnx_id = tcnx from tblDPNX where DPNX_ID = @DPNX_ID
	
	--B1: Update tblDPNX
	update tblDPNX
	set bcth = 3 -- TCSL xác nhận
	where dpnx_id = @dpnx_id
	
	--B3: Update cac mat hang cua phieu NX trong tblTON
	declare cur cursor for
	select SLNX_ID, MATHANG_ID, SLKH, SLTH 
	from tblSLNX 
	where DPNX_ID = @DPNX_ID
	open cur
	fetch next from cur
	into @slnx_id, @mathang_id, @slkh, @slth
	if @NX = 'N' --Neu la phieu nhap
		while @@fetch_status = 0
		begin
			update tblTON
			set sltonss = sltonss + @slth
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH, @SLTH
		end
	else --Neu la phieu xuat
		while @@fetch_status = 0
		begin
			update tblTON
			set sltonss = sltonss - @slth
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH, @SLTH
		end
	close cur
	deallocate cur
end
	
	
-- =============================================
-- Author:		HT
-- Create date: 2014-03-18
-- Description:	Kho hủy xác nhận
-- Kho hủy xác nhận thì phiếu sẽ về lại trạng thái KH xác nhận
-- =============================================
alter      procedure [dbo].[sp_TCSLHuyXacNhan]
@DPNX_ID as numeric
as
begin
	--Khi TCSL hủy xác nhận thì:
	--B1: Cập nhật lại tình trạng bcth = 2 (Quay về Kho xác nhận)
	--B3: Cập nhật lại sltss của các mặt hàng của phiếu NX trong tblTON:

	declare @nx as varchar(1), @tcnx_id as varchar(6)
	declare @slnx_id as numeric, @mathang_id as numeric, @slth as numeric(13,2)
	select @NX = NX, @tcnx_id = tcnx from tblDPNX where DPNX_ID = @DPNX_ID
	
	--B1: Update tblDPNX
	update tblDPNX
	set bcth = 2 -- Quay về tình trạng Kho xác nhận
	where dpnx_id = @dpnx_id
	
	--B3: Update cac mat hang cua phieu NX trong tblTON
	declare cur cursor for
	select SLNX_ID, MATHANG_ID, SLTH 
	from tblSLNX 
	where DPNX_ID = @DPNX_ID
	open cur
	fetch next from cur
	into @slnx_id, @mathang_id, @slth
	if @NX = 'N' --Neu la phieu nhap
		while @@fetch_status = 0
		begin
			update tblTON
			set sltonss = sltonss - @slth
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH, @SLTH
		end
	else --Neu la phieu xuat
		while @@fetch_status = 0
		begin
			update tblTON
			set sltonss = sltonss + @slth
			where mathang_id = @mathang_id
			fetch next from cur
			into @SLNX_ID, @MATHANG_ID, @SLKH, @SLTH
		end
	close cur
	deallocate cur
end



